/*
 * 作者：姚俊
 * 功能：留言的逻辑处理
 * 日期：2015-07-05-12-42
 */
package admin.service.fruits;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import teacher.bean.Teacher;

import database.dao.MysqlCrud;

import admin.bean.Note;

public class NoteService {
	
	
	/**
	 * @category 根据接收留言的人的所有条件来查询留言 
	 * @author yaojun
	 * @return List 返回一个类型为Note的List集合
	 */
	public List<Note> selectAllNote(Note note)
	{
		List<Note> notes=new ArrayList<Note>();
		String sql="select * from Note ";
		List<String> sql1=new ArrayList<String>();
		List<String> paras=new ArrayList<String>();
		String sql2=" order by locate('0',state) desc ";
		if(note!=null)
		{
			if(note.getId()!=null)
			{
				sql1.add(" id=? ");
				paras.add(String.valueOf(note.getId()));
			}
			if(note.getState()!=null)
			{
				sql1.add(" state=? ");
				paras.add(String.valueOf(note.getState()));
			}
			if(note.getFromUser()!=null)
			{
				sql1.add(" fromUser=? ");
				paras.add(String.valueOf(note.getFromUser()));
			}
			if(note.getToUser()!=null)
			{
				sql1.add(" toUser=? ");
				paras.add(String.valueOf(note.getToUser()));
			}
			if(note.getContent()!=null)
			{
				sql1.add(" content like ? ");
				paras.add("%"+String.valueOf(note.getContent())+"%");
			}
			if(note.getTitle()!=null)
			{
				sql1.add(" title like ? ");
				paras.add("%"+String.valueOf(note.getTitle())+"%");
			}
		}
		for(int i=0;i<sql1.size();i++)
		{
			if(i==0)
				sql+="where"+sql1.get(0);
			else
				sql+="and"+sql1.get(i);
		}
		sql+=sql2;
		String[] parameter=new String[paras.size()];
		for(int i=0;i<paras.size();i++)
		{
			parameter[i]=paras.get(i);
		}
		MysqlCrud mysqlcurd=new MysqlCrud();
		List<Map> lists = mysqlcurd.SelectData(sql, parameter);
		for(int i=0;i<lists.size();i++)
		{
			Map map=lists.get(i);
           try {
				Note note1=new Note();
				note1.setId(Integer.parseInt(map.get(0).toString()));
				try {
					note1.setFromUser(Integer.parseInt(map.get(1).toString()));
				} catch (Exception e) {
					// TODO Auto-generated catch block
					note1.setFromUser(null);
					e.printStackTrace();
				}
				try {
					note1.setToUser(Integer.parseInt(map.get(2).toString()));
				} catch (Exception e) {
					// TODO Auto-generated catch block
					note1.setToUser(null);
					e.printStackTrace();
				}
				note1.setContent((String)map.get(3));
				note1.setTitle((String)map.get(4));
				try {
					note1.setState(Integer.parseInt(map.get(5).toString()));
				} catch (Exception e) {
					// TODO Auto-generated catch block
					note1.setState(null);
					e.printStackTrace();
				}
				notes.add(note1);

				
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			
		}
		return notes;
		
	}	
	
	
	/**
	 * @category 根据接收留言的人的所有条件来查询留言的数量 
	 * @author yaojun
	 * @return int
	 */
	public int selectCountAllNote(Note note)
	{
		int count=0;
		String sql="select count(*) from Note ";
		List<String> sql1=new ArrayList<String>();
		List<String> paras=new ArrayList<String>();
		if(note!=null)
		{
			if(note.getId()!=null)
			{
				sql1.add(" id=? ");
				paras.add(String.valueOf(note.getId()));
			}
			if(note.getState()!=null)
			{
				sql1.add(" state=? ");
				paras.add(String.valueOf(note.getState()));
			}
			if(note.getFromUser()!=null)
			{
				sql1.add(" fromUser=? ");
				paras.add(String.valueOf(note.getFromUser()));
			}
			if(note.getToUser()!=null)
			{
				sql1.add(" toUser=? ");
				paras.add(String.valueOf(note.getToUser()));
			}
			if(note.getContent()!=null)
			{
				sql1.add(" content like ? ");
				paras.add("%"+String.valueOf(note.getContent())+"%");
			}
			if(note.getTitle()!=null)
			{
				sql1.add(" title like ? ");
				paras.add("%"+String.valueOf(note.getTitle())+"%");
			}
		}
		for(int i=0;i<sql1.size();i++)
		{
			if(i==0)
				sql+="where"+sql1.get(0);
			else
				sql+="and"+sql1.get(i);
		}
		String[] parameter=new String[paras.size()];
		for(int i=0;i<paras.size();i++)
		{
			parameter[i]=paras.get(i);
		}
		MysqlCrud mysqlcurd=new MysqlCrud();
		List<Map> lists=mysqlcurd.SelectData(sql, parameter);
		Map map=lists.get(0);
		count=Integer.parseInt(map.get(0).toString());

		return count;
		
	}	
	
	
	/**
	 * @category 更改一个留言对象的数据
	 * @author yaojun
	 * @param note Note 传入一个留言对象的参数
	 * @return boolean 如果成功true
	 */
	public boolean updateNote(int state,Note note2)
	{
		boolean b=false;
		String sql="update Note set state=? where id=?;";
		String[] parameter={String.valueOf(state),
				String.valueOf(note2.getId())};	
		MysqlCrud mysqlcurd=new MysqlCrud();
		b=mysqlcurd.InsertAndUpdateData(sql, parameter);
		return b;
	}
	
	
	/**
	 * @category 插入一条留言对象的数据
	 * @author yaojun
	 * @param note Note 传入一个留言对象的参数
	 * @return boolean 如果成功true
	 */
	public boolean insertNote(Note note)
	{
		boolean b=false;
		String sql="insert into Note(fromUser,toUser,content,title,state) values(?,?,?,?,?);";
		String[] parameter={String.valueOf(note.getFromUser()),
				String.valueOf(note.getToUser()),String.valueOf(note.getContent()),
				String.valueOf(note.getTitle()),String.valueOf(note.getState())};	
		MysqlCrud mysqlcurd=new MysqlCrud();
		b=mysqlcurd.InsertAndUpdateData(sql, parameter);
		return b;
	}
	
	
	
	/**
	 * @category 用于删除一条留言
	 * @param teacher 将要删除的留言信息
	 * @return 删除成功返回true，否则为false
	 */
	public boolean DeleteNote(Note note){
		boolean b=false;
		String sql = "delete from Note where id=?";
		String[]  parameter={String.valueOf(note.getId())};
		 MysqlCrud mysqlcurd=new MysqlCrud();
		 b= mysqlcurd.InsertAndUpdateData(sql, parameter);
		 return b;
	}
	
}
